#pragma once

#include <QObject>
#include <functional>

#include "ActionHelpers.h"
#include "Imports.h"

class BreakpointMenu : public QObject, public ActionHelperProxy {
  Q_OBJECT
 public:
  using GetSelectionFunc = std::function<duint()>;

  explicit BreakpointMenu(QWidget* parent, ActionHelperFuncs funcs,
                          GetSelectionFunc getSelection);
  void build(MenuBuilder* builder);

 public slots:
  void toggleInt3BPActionSlot();
  void editSoftBpActionSlot();
  void toggleHwBpActionSlot();
  void setHwBpOnSlot0ActionSlot();
  void setHwBpOnSlot1ActionSlot();
  void setHwBpOnSlot2ActionSlot();
  void setHwBpOnSlot3ActionSlot();
  void setHwBpAt(duint va, int slot);

 private:
  GetSelectionFunc mGetSelection;
};
